package club.service;

import club.pojo.AdoptAnimal;
import com.github.pagehelper.PageInfo;

/**
 * 宠物领养服务接口
 * 定义宠物领养申请相关的业务操作方法
 */
public interface AdoptAnimalService {

    /**
     * 创建新的宠物领养申请
     * @param adoptAnimal 领养申请实体对象（包含用户ID、宠物ID、申请时间等信息）
     * @return 插入成功返回1，失败返回0
     */
    Integer create(AdoptAnimal adoptAnimal);

    /**
     * 分页查询已通过的宠物领养记录（支持按领养时间筛选）
     * @param adoptTime 领养时间（格式：yyyy-MM-dd，支持模糊查询）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 分页结果对象，包含状态为"已通过"的领养记录及分页信息
     */
    PageInfo<AdoptAnimal> all(String adoptTime, Integer pageNum, Integer pageSize);

    /**
     * 更新领养申请状态（如审核通过或拒绝）
     * @param id 领养申请ID
     * @param state 新状态（如0-待审核，1-已通过，2-已拒绝）
     * @return 更新成功返回1，失败返回0
     */
    int update(Integer id, Integer state);

    /**
     * 分页查询宠物领养记录（支持按用户名和状态筛选）
     * @param userName 申请人用户名（模糊匹配）
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param state 申请状态（可选，筛选待审核/已通过/已拒绝的记录）
     * @return 分页结果对象，包含匹配的领养记录及分页信息
     */
    PageInfo<AdoptAnimal> allAdoptAnimal(String userName, Integer pageNum, Integer pageSize, Integer state);
}